package org.nuonuo.sdk.client;

import org.nuonuo.sdk.valid.Validator;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

import javax.validation.constraints.NotEmpty;

/**
 * @Version 1.0
 * @Author az
 * @Date 2024-03-28 09:07:49
 * @ClassName NNConfig
 * @Description
 */
@Configuration
@ConfigurationProperties(prefix = "nuonuo")
public class NProperties extends Validator {

    /**
     * <pre>
     * 开票平台接口
     *  exg:https://sdk.nuonuo.com/open/v1/services
     * </pre>
     */
    @NotEmpty(message = "请配置诺诺开票平台接口")
    private String url;
    /**
     * 授权企业税号
     */
    @NotEmpty(message = "请配置诺诺开票平台授权企业税号")
    private String salerTaxNum;

    /**
     * appKey
     */
    @NotEmpty(message = "请配置诺诺开票平台appKey")
    private String appKey;

    /**
     * appSecret
     */
    @NotEmpty(message = "请配置诺诺开票平台appSecret")
    private String appSecret;

    /**
     * 开票员
     */
    @NotEmpty(message = "请配置诺诺开票平台开票员")
    private String clerk;
    /**
     * 复核人
     */
//    @NotEmpty(message = "请配置诺诺开票平台复核人")
    private String checker;

    /**
     * 收款人
     */
    private String payee;

    /**
     * 分机号
     */
    private String extensionNumber;

    /**
     * 终端号
     */
    private String terminalNumber;

    /**
     * 机器编号
     */
    private String machineNumber;

    /**
     * 通用回调
     */
    private String callback;

    /**
     * <pre>
     * 快捷红冲回调，即：
     * nuonuo.OpeMplatform.fastInvoiceRed(诺税通saas发票快捷冲红接口）回调
     * </pre>
     */
    private String fastRedCallback;

    /**
     * <pre>
     * 红字确认单申请回调，即：
     * nuonuo.OpeMplatform.saveInvoiceRedConfirm(诺税通saas红字确认单申请接口)口回调
     * </pre>
     */
    private String redConfirmCallback;


    /**
     * 销方名称
     */
    private String salerName;

    /**
     * 销方电话
     */
    private String salerTel;
    /**
     * 销方地址
     */
    private String salerAddress;

    /**
     * 销方银行开户行及账号
     */
    private String salerAccount;
    /**
     * 温馨提示
     */
    private String warmReminder = "诺诺开票平台提示您：";

    /**
     * 是否自动获取开票信息
     */
    private boolean autoGetInvoice;

    /**
     * 使用严格模式
     */
    private boolean useStrict;

    /**
     * 是否关闭所有日志输出
     */
    private boolean closeLog;

    /**
     * 是否输出请求日志
     */
    private boolean retLog;

    /**
     * <pre>
     * 数电电票是否展示收款人和复核人
     * 0：不显示
     * 1：显示
     * </pre>，
     */
    private boolean showChecker;

    /**
     * 输出日志
     */
    private boolean printLog;
    /**
     * 提供发票明细
     */
    private boolean offerInvoiceDetail;

    private boolean debug;

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getSalerTaxNum() {
        return salerTaxNum;
    }

    public void setSalerTaxNum(String salerTaxNum) {
        this.salerTaxNum = salerTaxNum;
    }

    public String getAppKey() {
        return appKey;
    }

    public void setAppKey(String appKey) {
        this.appKey = appKey;
    }

    public String getAppSecret() {
        return appSecret;
    }

    public void setAppSecret(String appSecret) {
        this.appSecret = appSecret;
    }

    public String getClerk() {
        return clerk;
    }

    public void setClerk(String clerk) {
        this.clerk = clerk;
    }

    public String getChecker() {
        return checker;
    }

    public void setChecker(String checker) {
        this.checker = checker;
    }

    public String getPayee() {
        return payee;
    }

    public void setPayee(String payee) {
        this.payee = payee;
    }

    public String getExtensionNumber() {
        return extensionNumber;
    }

    public void setExtensionNumber(String extensionNumber) {
        this.extensionNumber = extensionNumber;
    }

    public String getTerminalNumber() {
        return terminalNumber;
    }

    public void setTerminalNumber(String terminalNumber) {
        this.terminalNumber = terminalNumber;
    }

    public String getMachineNumber() {
        return machineNumber;
    }

    public void setMachineNumber(String machineNumber) {
        this.machineNumber = machineNumber;
    }

    public String getCallback() {
        return callback;
    }

    public void setCallback(String callback) {
        this.callback = callback;
    }

    public String getFastRedCallback() {
        return fastRedCallback;
    }

    public void setFastRedCallback(String fastRedCallback) {
        this.fastRedCallback = fastRedCallback;
    }

    public String getRedConfirmCallback() {
        return redConfirmCallback;
    }

    public void setRedConfirmCallback(String redConfirmCallback) {
        this.redConfirmCallback = redConfirmCallback;
    }

    public String getSalerName() {
        return salerName;
    }

    public void setSalerName(String salerName) {
        this.salerName = salerName;
    }

    public String getSalerTel() {
        return salerTel;
    }

    public void setSalerTel(String salerTel) {
        this.salerTel = salerTel;
    }

    public String getSalerAddress() {
        return salerAddress;
    }

    public void setSalerAddress(String salerAddress) {
        this.salerAddress = salerAddress;
    }

    public String getSalerAccount() {
        return salerAccount;
    }

    public void setSalerAccount(String salerAccount) {
        this.salerAccount = salerAccount;
    }

    public String getWarmReminder() {
        return warmReminder;
    }

    public void setWarmReminder(String warmReminder) {
        this.warmReminder = warmReminder;
    }

    public boolean isAutoGetInvoice() {
        return autoGetInvoice;
    }

    public void setAutoGetInvoice(boolean autoGetInvoice) {
        this.autoGetInvoice = autoGetInvoice;
    }

    public boolean isUseStrict() {
        return useStrict;
    }

    public void setUseStrict(boolean useStrict) {
        this.useStrict = useStrict;
    }

    public boolean isCloseLog() {
        return closeLog;
    }

    public void setCloseLog(boolean closeLog) {
        this.closeLog = closeLog;
    }

    public boolean isRetLog() {
        return retLog;
    }

    public void setRetLog(boolean retLog) {
        this.retLog = retLog;
    }

    public boolean isShowChecker() {
        return showChecker;
    }

    public void setShowChecker(boolean showChecker) {
        this.showChecker = showChecker;
    }

    public boolean isPrintLog() {
        return printLog;
    }

    public void setPrintLog(boolean printLog) {
        this.printLog = printLog;
    }

    public boolean isOfferInvoiceDetail() {
        return offerInvoiceDetail;
    }

    public void setOfferInvoiceDetail(boolean offerInvoiceDetail) {
        this.offerInvoiceDetail = offerInvoiceDetail;
    }

    public boolean isDebug() {
        return debug;
    }

    public void setDebug(boolean debug) {
        this.debug = debug;
    }
}
